import Mock from 'mockjs'
function param2Obj(url) {
  const search = url.split('?')[1]
  if (!search) {
    return {}
  }
  return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
}

// 创建一个数组用来接收模拟的数据
/* let loginAccount = {
  "error_code": 0,
  "data": [{
      "id": '1',
      "role": "admin",
      "username": "admin@qq.com",
      "phone":"13545592360",
      "password": "123456admin",
      "token": "4213196543",
      "status":"valid"
    },
    {
      "id": '2',
      "role": "normal",
      "username": "normal@qq.com",
      "phone":"13545593494",
      "password": "123456normal",
      "token": "38596729",
      "status":"valid"
    }
  ]
} */
let loginAccount=[{
    "id": '1',
    "role": "admin",
    "username": "admin@qq.com",
    "phone":"13545592360",
    "password": "123456admin",
    "token": "4213196543",
    "status":"valid"
  },
  {
    "id": '2',
    "role": "normal",
    "username": "normal@qq.com",
    "phone":"13545593494",
    "password": "123456normal",
    "token": "38596729",
    "status":"valid"
  }
]
/* for (let i = 0; i < 1; i++) {
  List.push(Mock.mock({
    id: Mock.Random.guid(),
    'role|1':'admin',//随机选择一个角色
    username: '@email',
    password: /^1[385][1-9]\d{8}/,
    token:Mock.Random.integer(0,10000),
    status: 'valid'
  }))
} */
let vcode = '070816'
export default {
  getLoginAccount: config => {
    console.log("afterLogin");
    console.log(loginAccount);
    return loginAccount
  },
  registerAccount: config => {
    // const { id, image,name, phone,balance, addr, email,role,status,age, birth, sex } = param2Obj(config.url)
    const { id,username,password,code } = param2Obj(config.url)
    // 表单提交过来后所有的表单项都已经变成了字符串，但是性格和状态在定义的时候定义的0/1，所以需要用parseInt()转换成整形
    // 如果没有转换，表单选中的值并没有真正加到表单，渲染到table中时它就会按照转换函数formatSex第三种情况未定义的值来渲染   
    console.log(loginAccount.some(item => item.username == username));
    
    // 要先判断数据库中是否已经有了同一用户名，邮箱是唯一的
    if (loginAccount.some(item => item.username == username)) {
      return {
        code: 1,
        data:{
          message:'用户名已存在'
        }
      }
    }else{
      loginAccount.unshift({
        id:id,
        username: username,
        password: password,
        role: "normal",
        token: "111111111",
        status:"valid"
      })
      return {
        loginAccount,
        code: 0,
        data: {
          message: '注册成功，前去登录'
        }
      }
    }
  },
  deleteAccount: config => {
    const { username } = param2Obj(config.url)
    List = List.filter(u => u.username !== username)
    // 还要检查用户余额
    return {
      code: 0,
      data: {
        message: '注销成功'
      }
    }
  },
  modifyPwd: config => {
    // const { id, image,name, phone,balance, addr, email,role,status,age, birth, sex } = param2Obj(config.url)
    const { id,username,password } = param2Obj(config.url)
    // 表单提交过来后所有的表单项都已经变成了字符串，但是性格和状态在定义的时候定义的0/1，所以需要用parseInt()转换成整形
    // 如果没有转换，表单选中的值并没有真正加到表单，渲染到table中时它就会按照转换函数formatSex第三种情况未定义的值来渲染   
    console.log(loginAccount.some(item => item.username == username));

    // 要先判断数据库中是否已经有了同一用户名，邮箱是唯一的
    if (!loginAccount.some(item => item.username == username)) {
      return {
        code: 1,
        data:{
          message:'不存在该用户，请重新输入用户名'
        }
      }
    } else if (loginAccount.some(item => item.password == password)) {
      return {
        code: 1,
        data:{
          message:'新密码不能和原密码一样'
        }
      }
    }
    else {
      loginAccount.some(u => {
        if (u.username === username) {
          u.password = password
          return true
        }
      })
      return {
        loginAccount,
        code: 0,
        data: {
          message: '密码修改成功，请用新密码登录'
        }
      }
    }
  },
  getCode: config => {
    // const { id, image,name, phone,balance, addr, email,role,status,age, birth, sex } = param2Obj(config.url)
    /* console.log(param2Obj(config.url));
    console.log(typeof param2Obj(config.url));
    console.log(param2Obj(config.url)[0]);
    console.log(typeof param2Obj(config.url)[0]);
    const username = param2Obj(config.url)[0] */
    // 表单提交过来后所有的表单项都已经变成了字符串，但是性格和状态在定义的时候定义的0/1，所以需要用parseInt()转换成整形
    // 如果没有转换，表单选中的值并没有真正加到表单，渲染到table中时它就会按照转换函数formatSex第三种情况未定义的值来渲染   
    /* console.log(loginAccount.some(item => item.username === "admin@qq.com"));
    console.log(loginAccount.some(item => item.username === username));
    console.log(username); */
    
    // ERROR 由于验证码是发送给第三方的，所以并不能从账户里面验证
    // 要先判断数据库中是否已经有了同一用户名，邮箱是唯一的
    /* if (!loginAccount.some(item => item.username == username)) {
      return {
        code: 1,
        data:{
          message:'不存在该用户，请重新输入用户名'
        }
      }
    }else{
      return {
        code: 0,
        data: {
          vcode,
          message: '验证码发送成功，为'+vcode
        }
      }
    } */
    return {
      code: 0,
      data: {
        vcode,
        message: '验证码发送成功，为'+vcode
      }
    }
  },
}